package com.greenold.service.mapper;

import java.time.LocalDateTime;
import java.util.List;

import com.greenold.service.domain.CarePlanItem;
import com.greenold.service.domain.CareTask;
import com.greenold.service.domain.vo.CareTaskVO;
import com.greenold.service.domain.vo.CheckInConfigVO;
import org.apache.ibatis.annotations.Param;

/**
 * 护理任务Mapper接口
 *
 * @author YueYang
 * @date 2025-10-14
 */
public interface CareTaskMapper {
    /**
     * 查询护理任务
     *
     * @param id 护理任务主键
     * @return 护理任务
     */
    public CareTaskVO selectCareTaskById(Long id);

    /**
     * 根据床位id 查询床位下的护理员姓名列表
     *
     * @param bedId 床位id
     * @return 护理员姓名列表
     */
    List<String> selectNurseNameListByBedId(Long bedId);

    /**
     * 查询护理任务列表
     *
     * @param careTask 护理任务
     * @return 护理任务集合
     */
    public List<CareTaskVO> selectCareTaskList(CareTask careTask);


    /**
     * 更新护理任务
     *
     * @param careTask 护理任务
     * @return 结果
     */
    int updateCareTask(CareTask careTask);


    /**
     * 查询所有入住配置信息
     *
     * @return 返回映射结果
     */
    List<CheckInConfigVO> selectCheckInConfigList();


    /**
     * 根据护理计划id 查询该护理计划关联的项目
     *
     * @param carePlanId 护理计划id
     * @return 护理计划关联的项目集合
     */
    List<CarePlanItem> selectCarePlanItemListByCarePlanId(@Param("carePlanId") int carePlanId);

    /**
     * 根据老人id 和 开始时间 查询老人当前月份呢的账单编号
     *
     * @param id        老人id
     * @param billMonth 开始时间
     * @return 老人的账单编号
     */
    String selectBillByElderIdAndStartTime(@Param("id") Long id, @Param("billMonth") String billMonth);

    /**
     * 批量插入护理任务
     *
     * @param careTaskList 护理任务集合
     */
    void insertBatch(@Param("careTaskList") List<CareTask> careTaskList);
}
